/**
 * 闹钟工具类
 */

// 保存闹钟列表到本地存储
export function saveAlarmList(alarmList) {
	try {
		uni.setStorageSync('alarmList', JSON.stringify(alarmList));
		return true;
	} catch (e) {
		console.error('保存闹钟列表失败', e);
		return false;
	}
}

// 从本地存储加载闹钟列表
export function loadAlarmList() {
	try {
		const alarmListStr = uni.getStorageSync('alarmList');
		if (alarmListStr) {
			return JSON.parse(alarmListStr);
		}
		return [];
	} catch (e) {
		console.error('加载闹钟列表失败', e);
		return [];
	}
}

// 格式化时间显示
export function formatTime(hour, minutes) {
	return `${hour.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
}

// 格式化周期显示
export function formatWeekday(weekday) {
	if (!weekday) return '不重复';
	
	const weekMap = {
		'1': '周一',
		'2': '周二',
		'3': '周三',
		'4': '周四',
		'5': '周五',
		'6': '周六',
		'7': '周日'
	};
	
	// 如果是每天
	if (weekday === '1234567') return '每天';
	// 如果是工作日
	if (weekday === '12345') return '工作日';
	// 如果是周末
	if (weekday === '67') return '周末';
	
	// 其他自定义组合
	let result = '';
	for (let i = 0; i < weekday.length; i++) {
		result += weekMap[weekday[i]] + ' ';
	}
	return result.trim();
}

// 切换到下一个周期
export function switchToNextCycle(alarm) {
	try {
		// 获取现有闹钟列表
		let alarmList = loadAlarmList();
		
		// 找到对应的闹钟
		const index = alarmList.findIndex(item => 
			item.name === alarm.name && 
			item.hour === alarm.hour && 
			item.minutes === alarm.minutes
		);
		
		if (index !== -1) {
			// 切换到下一个周期
			alarmList[index].currentCycleIndex = (alarmList[index].currentCycleIndex + 1) % 2;
			
			// 保存到本地存储
			saveAlarmList(alarmList);
			
			console.log('已切换到下一个周期', alarmList[index].currentCycleIndex);
			return alarmList[index];
		}
		return null;
	} catch (e) {
		console.error('切换周期失败', e);
		return null;
	}
}

// 检查今天是否需要闹钟
export function checkTodayAlarm() {
	try {
		const alarmList = loadAlarmList();
		const today = new Date();
		const dayOfWeek = today.getDay(); // 0是周日，1-6是周一到周六
		const weekdayMap = {
			0: '7', // 周日
			1: '1', // 周一
			2: '2', // 周二
			3: '3', // 周三
			4: '4', // 周四
			5: '5', // 周五
			6: '6'  // 周六
		};
		const todayWeekday = weekdayMap[dayOfWeek];
		
		// 过滤出今天需要响铃的闹钟
		const todayAlarms = alarmList.filter(alarm => {
			if (!alarm.enabled) return false;
			
			if (alarm.customCycle) {
				// 如果是自定义周期，检查当前周期是否包含今天
				const currentCycle = alarm.cycles[alarm.currentCycleIndex];
				return currentCycle.includes(todayWeekday);
			} else {
				// 如果是普通重复，直接检查是否包含今天
				return alarm.weekday.includes(todayWeekday);
			}
		});
		
		return todayAlarms;
	} catch (e) {
		console.error('检查今天闹钟失败', e);
		return [];
	}
}